package com.htthorizon.model.mapper;

import java.util.List;

import cn.hutool.core.date.DateTime;
import com.htthorizon.model.domain.ModelInfo;
import com.htthorizon.model.response.ModelSpecialityDto;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

/**
 * 模型信息Mapper接口
 *
 * @author mark
 * @date 2023-11-15
 */
@Mapper
public interface ModelInfoMapper
{
    /**
     * 查询模型信息
     *
     * @param id 模型信息主键
     * @return 模型信息
     */
    public ModelInfo selectModelInfoById(Long id);

    /**
     *  按专业域分组统计
     * @param modelInfo
     * @return
     */
    public List<ModelSpecialityDto> selectModelInfoGroupBySpeciality(ModelInfo modelInfo);


    /**
     * 查询模型信息列表
     *
     * @param modelInfo 模型信息
     * @return 模型信息集合
     */
    public List<ModelInfo> selectModelInfoList(ModelInfo modelInfo);

    /**
     * 新增模型信息
     *
     * @param modelInfo 模型信息
     * @return 结果
     */
    public int insertModelInfo(ModelInfo modelInfo);

    /**
     * 修改模型信息
     *
     * @param modelInfo 模型信息
     * @return 结果
     */
    public int updateModelInfo(ModelInfo modelInfo);

    /**
     * 更改模型使用次数
     * @param id
     * @return
     */
    public int updateModelInfoUseCount(Long id);

    /**
     * 删除模型信息
     *
     * @param id 模型信息主键
     * @return 结果
     */
    public int deleteModelInfoById(Long id);

    /**
     * 批量删除模型信息
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteModelInfoByIds(Long[] ids);

    List<ModelInfo> list();

    List<ModelInfo> selectTimeLimit(@Param("date") DateTime date,@Param("lastMonth") DateTime lastMonth);

    int countModelInfoByModelName(@Param("modelName") String modelName);

    List<ModelInfo> getPage(@Param("pageNum")int pageNum,@Param("pageSize") int pageSize,@Param("modelInfo") ModelInfo modelInfo);

    Integer count(@Param("modelInfo")ModelInfo modelInfo);
}
